package com.ysj.senioradvanced.Handler

import java.lang.RuntimeException

/**
 * 手写 Looper
 * @author YSJ
 * @date 18:30 2020/11/24
 */
class MyLooper {

    /*
    1.只是实现大概逻辑


    Android 原生实现 逻辑如下

         Looper.prepareMainLooper();
         sThreadLocal.set(new Looper(quitAllowed));  这里创建了 Looper 并设置给了线程的局部变量
         mQueue = new MessageQueue(quitAllowed);     这里创建队列
         mThread = Thread.currentThread();           这里创建当前线程


     */
    companion object{
        /**
         * 开启 loop
         */
        fun loop(){
            while (true){
                val next = MyMessageQueue.next()
                //println("消息$next")
                if (next!=null){
                    next.handler?.dispatchMessage(next)
                }
            }
        }


    }
}